﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Support.DTO;
using Business;
using Support.Enums;

namespace SindicatoLuzYFuerza.WebService
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public List<ParentescoDTO> GetParentescos()
        {
            return Parentesco.GetParentescos();
            //return "hola";
        }

        [WebMethod]
        public ERoles IniciarSesion(string userName, string password)
        {
            //Super Harcodeado, hacerle más copado despues...
            return ERoles.Jefe;            
        }

        [WebMethod]
        public List<EstadoCivilDTO> GetEstadosCiviles()
        {
            return EstadoCivil.GetEstadosCiviles();
        }

        [WebMethod]
        public List<NacionalidadDTO> GetNacionalidades()
        {
            return Nacionalidad.GetNacionalidades();
        }

        [WebMethod]
        public List<EmpresaDTO> GetEmpresas()
        {
            return Empresa.GetEmpresas();
        }

        [WebMethod]
        public int GuardarEmpresa(string nombre, string cuit)
        {
            return Empresa.GuardarEmpresa(nombre, cuit);
        }

        [WebMethod]
        public int GuardarAfiliado(
            string Transferido,
            string NroInternoTitular,
            string NroInternoFamiliar,
            string NroAfiliadoTitular,
            string nroAfiliadoFamiliar,
            string FechaNacimiento,
            string Nombre,
            string Apellido,
            string Cuil,
            string Nacionalidad,
            string Sexo,
            string EstadoCivil,
            string Discapacitado,
            string NivelDiscapacidad,
            string Estudia,
            string NivelEstudio,
            string Trabaja,
            string Censado,
            string Parentesco,
            string Delegacion,
            string Filial,
            string Calle,
            string CalleNumero,
            string Piso,
            string Departamento,
            string Pallier,
            string Telefono,
            string TelefonoAuxiliar,
            string Provincia,
            string Localidad,
            string CodigoPostal,
            string TipoDocumento,
            string NumeroDocumento,
            string EntidadEmisora,
            string CategoriaTitular,
            string EmpresaId,
            string FechaIngreso,
            string FechaCarga,
            string FechaExcepcion,
            string MotivoExcepcion
        )
        {
            return Afiliado.GuardarAfiliado(Transferido,
                NroInternoTitular,
                NroInternoFamiliar,
                NroAfiliadoTitular,
                nroAfiliadoFamiliar,
                FechaNacimiento,
                Nombre,
                Apellido,
                Cuil,
                Nacionalidad,
                Sexo,
                EstadoCivil,
                Discapacitado,
                NivelDiscapacidad,
                Estudia,
                NivelEstudio,
                Trabaja,
                Censado,
                Parentesco,
                Delegacion,
                Filial,
                Calle,
                CalleNumero,
                Piso,
                Departamento,
                Pallier,
                Telefono,
                TelefonoAuxiliar,
                Provincia,
                Localidad,
                CodigoPostal,
                TipoDocumento,
                NumeroDocumento,
                EntidadEmisora,
                CategoriaTitular,
                EmpresaId,
                FechaIngreso,
                FechaCarga,
                FechaExcepcion,
                MotivoExcepcion
            );
        }

        [WebMethod]
        public List<AfiliadoDTO> BuscarAfilByNroInterno(string nroInterno)
        {
            return Afiliado.BuscarAfilByNroInterno(nroInterno);
        }


        [WebMethod]
        public List<AfiliadoDTO> BuscarAfilByNroDocumento(string nroDocumento)
        {
            return Afiliado.BuscarAfilByNroDocumento(nroDocumento);
        }

        [WebMethod]
        public List<AfiliadoDTO> BuscarAfilByNombre(string nombre, string apellido)
        {
            return Afiliado.BuscarAfilByNombre(nombre, apellido);
        }

        [WebMethod]
        public List<LocalidadDTO> GetLocalidadesByProvId(int provinciaId)
        {
            return Localidad.GetLocalidadesByProvId(provinciaId);
        }


        [WebMethod]
        public List<ProvinciaDTO> GetProvincias()
        {
            return Provincia.GetProvincias();
        }

        [WebMethod]
        public int UpdateAfiliado(AfiliadoDTO afiliado)
        {
            return Afiliado.UpdateAfiliado(afiliado);
        }

        [WebMethod]
        public EmpresaDTO GetEmpresaById(int empresaId)
        {
            return Empresa.GetEmpresaById(empresaId);
        }

        [WebMethod]
        public LocalidadDTO GetLocalidadById(int localidadId)
        {
            return Localidad.GetLocalidadById(localidadId);
        }

        [WebMethod]
        public ProvinciaDTO GetProvinciaById(int provinciaId)
        {
            return Provincia.GetProvinciaById(provinciaId);
        }

        [WebMethod]
        public ParentescoDTO GetParentescoById(int parentescoId)
        {
            return Parentesco.GetParentescoById(parentescoId);
        }

        [WebMethod]
        public UsuarioDTO GetUsuario(string username, string password)
        {
            return Usuario.GetUsuario(username,password);
        }
    }
}